<?php

/* ========================================================================= */
/* This file is part of the HypnoPHP Framework Library                       */
/* Copyright (c) 2009-2010, Radu Buzea                                       */
/* ========================================================================= */

/**
* @author Radu Buzea
* @copyright Copyright (c) 2009-2010, Radu Buzea (www.hypnosis.ro)
* @license GNU Lesser General Public License (www.gnu.org/copyleft/lesser.html)
* @package HypnoPHP
* @package HypnoPHP
* @category Core
* @version 1.0.3
*/

// ============================================================================
// Final class: HInternalUI
// ============================================================================

final class HInternalUI
{

	protected $__css_inserted = false;
	protected $__js_inserted = false;

	# ###########################################################################

	/**
	* Load HypnoPHP UI file (CSS or JavaScript)
	*
	* @param string $type Can be 'css' or 'js'
	* @return string
	* @access public
	*/
	public function loadHypnoUIFile($type = '')
	{
		$type = strtolower(trim($type));
		if ($type != 'css' && $type != 'js') { return null; }
		$hypno_ui_path = rtrim(dirname(HSYSTEM_LIB_PATH), DS);
		$hypno_file = $hypno_ui_path . DS . 'ui' . DS . 'hypnophp.' . $type;
		if (is_file($hypno_file)) {
			return file_get_contents($hypno_file);
		} else {
			return "/* HypnoPHP UI '{$type}' file not exists '{$hypno_file}' */";
		}
	}

	# ###########################################################################

	/**
	* Include the CSS code
	* If $return_code is TRUE then the code will be retunred, on FALSE the code will be
	* send to the output buffer
	*
	* @param boolean $return_code Optional, the return control
	* @return string
	* @access public
	*/
	public function includeCSS($return_code = false)
	{
		if (!$this->__css_inserted) {
			$this->__css_inserted = true;
			$code = $this->loadHypnoUIFile('css');
			if ($return_code) { return $code; }
			else { echo '<style type="text/css">' . PHP_EOL . $code . PHP_EOL . '</style>' . PHP_EOL; }
		}
		return $this;
	}

	# ###########################################################################

	/**
	* Include the JavaScript code
	* If $return_code is TRUE then the code will be retunred, on FALSE the code will be
	* send to the output buffer
	*
	* @param boolean $return_code Optional, the return control
	* @return string
	* @access public
	*/
	public function includeJS($return_code = false)
	{
		if (!$this->__js_inserted) {
			$this->__js_inserted = true;
			$code = $this->loadHypnoUIFile('js');
			if ($return_code) { return $code; }
			else { echo '<script type="text/javascript"><!--' . PHP_EOL . $code . PHP_EOL . '//--></script>' . PHP_EOL; }
		}
		return $this;
	}

	# ###########################################################################

	/**
	* Generate the layout of a message box
	* If $return_code is TRUE then the code will be retunred, on FALSE the code will be
	* send to the output buffer
	*
	* @param int $message_type The message type
	* @param string $message_title The message title
	* @param string $message The message content
	* @param bool $return_code Optional, the return control
	* @return string
	* @access public
	*/
	public function messageBoxLayout($message_type = 0, $message_title = '', $message = '', $return_code = true)
	{
		$hypno_ui_path = rtrim(dirname(HSYSTEM_LIB_PATH), DS);
		$hypno_file = $hypno_ui_path . DS . 'ui' . DS . 'message_box.phtml';
		if (!is_file($hypno_file)) {
			ob_start();
			HApplication::incObCount();
			$this->includeCSS()->includeJS();
			echo "<div class=\"hypno_msg_box\"><strong>{$message_title}:</strong> {$message}</div>";
			$code = ob_get_clean();
			HApplication::decObCount();
			if ($return_code) { return $code; }
		}
		if ($message_type > -1) {
			$site_root = HApplication::getConfig('site_root');
			if (empty($site_root)) { $site_root = '/'; }
			if (isset($site_root[2]) && substr($site_root, -1, 1) != '/') { $site_root .= '/'; }
			if (HApplication::rewriteMode()) {
				$icon_uri = $site_root . 'hypnophp_internal_ui_icon?t=' . $message_type;
			} else {
				$icon_uri = $site_root . '?/hypnophp_internal_ui_icon&t=' . $message_type;
			}
		}
		ob_start();
		HApplication::incObCount();
		include $hypno_file;
		$code = ob_get_clean();
		HApplication::decObCount();
		if ($return_code) { return $code; }
		echo $code;
		return true;
	}

	# ###########################################################################

	/**
	* Check if the system has a debug viewer template
	*
	* @return bool
	* @access public
	* @static
	*/
	static public function checkDebugViewer()
	{
		$hypno_ui_path = rtrim(dirname(HSYSTEM_LIB_PATH), DS);
		$hypno_file = $hypno_ui_path . DS . 'ui' . DS . 'debug_viewer.phtml';
		return is_file($hypno_file);
	}

	# ###########################################################################

	/**
	* Generate the HTML color for teh HypnoPHP Framework icon
	*
	* @param bool $with_link
	* @return bool
	* @access public
	* @static
	*/
	static public function hypnophpIconCode($with_link = true)
	{
		if (HGLOBAL_USE_REWRITE_MODE) {
			$icon_uri = '/hypnophp_internal_ui_icon?t=0';
		} else {
			$uri = dirname($_SERVER['PHP_SELF']);
			if ($uri == '/') { $uri = ''; }
			$icon_uri = $uri . '/index.php?nav=' . urldecode('/hypnophp_internal_ui_icon') . '&t=0';
		}
		$img_code = "<img src=\"{$icon_uri}\" style=\"width:64px;height:64px;border:0px\" alt=\"HypnoPHP Framework\" />";
		if ($with_link) {
			$img_code = "<a href=\"http://www.hypnosis.ro/\" title=\"HypnoPHP Framework (www.hypnosis.ro)\">{$img_code}</a>";
		}
		return $img_code;
	}

	# ###########################################################################

	/**
	* Get an internal icon
	*
	* @param int $icon_type
	* @return string
	* @access public
	* @static
	*/
	static public function internalUIIcon($icon_type = 0)
	{
		switch ($icon_type) {
			case 0:
				$ico_name = "icon_hypnophp.png";
				$b64_icon = "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";
				break;
			case E_ERROR:
			case E_USER_ERROR:
			case E_COMPILE_ERROR:
			case E_PARSE:
			case E_CORE_ERROR:
			case E_RECOVERABLE_ERROR:
				$ico_name = "icon_error.png";
				$b64_icon = "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";
				break;
			case E_WARNING:
			case E_USER_WARNING:
			case E_COMPILE_WARNING:
				$ico_name = "icon_warning.png";
				$b64_icon = "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";
				break;
			default:
				$ico_name = "icon_notice.png";
				$b64_icon = "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";
				break;
		}
		HResponse::set_header('Content-type', 'image/png');
		HResponse::set_header('Content-Disposition', "inline;filename=\"{$ico_name}\"");
		return base64_decode($b64_icon);
	}

	# ###########################################################################

	public function hypnophpUIIconAction()
	{
		$icon_type = HRequest::params()->t;
		if ($icon_type == null) { $icon_type == 0; }
		return HInternalUI::internalUIIcon($icon_type);
	}

	# ###########################################################################

}